home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Risc World 3
/
Risc World 3.iso
/
SOFTWARE
/
ISSUE6
/
PD
/
PDF
/
GuiLib
/
Wimp
/
h
/
GuiBBox
< prev
next >
Wrap
Text File
|
2003-02-14
|
4KB
|
84 lines
//--------------------------------------------------------------------------
//
// Copyright (c) 2002, Colin Granville
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or
// without modification, are permitted provided that the following
// conditions are met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following
// disclaimer in the documentation and/or other materials
// provided with the distribution.
//
// * The name Colin Granville may not be used to endorse or promote
// products derived from this software without specific prior
// written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
// OF THE POSSIBILITY OF SUCH DAMAGE.
//
//--------------------------------------------------------------------------
#ifndef GuiBBox_h
#define GuiBBox_h
#include "stl:bool.h"
class GuiBBox
{
public:
int xmin, ymin, xmax, ymax;
void set(int x_min,int y_min,int x_max,int y_max) {
xmin = x_min; xmax = x_max;
ymin = y_min; ymax = y_max;
}
void operator()(int x_min,int y_min,int x_max,int y_max) {
xmin = x_min; xmax = x_max;
ymin = y_min; ymax = y_max;
}
int getWidth() const {return xmax-xmin;}
void setWidth(int width) {xmax=xmin+width;}
int getHeight() const {return ymax-ymin;}
void setHeight(int height) {ymax=ymin+height;}
int getDepth() const {return ymax-ymin;}
bool overlap(const GuiBBox& b) const
{return !(xmin>=b.xmax || xmax<=b.xmin || ymax<=b.ymin || ymin>=b.ymax);}
void moveBy(int x,int y) {xmin+=x;xmax+=x;ymin+=y;ymax+=y;}
void moveTo(int left_x,int top_y) {
xmax=left_x+getWidth();xmin=left_x;
ymin=top_y-getDepth();ymax=top_y;
}
void centreInBox(const GuiBBox& b) {
int size=getWidth();
xmin=(b.xmin+b.xmax-size)/2;
xmax=xmin+size;
size=getHeight();
ymin=(b.ymin+b.ymax-size)/2;
ymax=ymin+size;
}
};
#endif